#ifndef TOP_REGION_H_
#define TOP_REGION_H_

/// INCLUDES ///
#include "region.h"
#include "object.h"
#include <string>
////////////////

/// TopRegion callback
class TopRegionListener
{
public:
	virtual void TimerCompleted() = 0;
};

/**
* A region that represents the top layer in the application. It is used to 
* present the user with information/choices.
* 
* @author dfoelber
**/
class TopRegion : public Region
{
public:
	/**
	* Constructor
	**/
	TopRegion();
	
	/**
	* Destructor
	**/
	virtual ~TopRegion();
	
	/**
	* Notifies of time passing.
	* 
	* Overridden from Region.
	* 
	* @param The amount of time, in milliseconds, that passed since the last call
	**/
	virtual void TimePassed( int ms );
	
	/**
	* Resets the top region.
	**/
	void Reset();
	
	/**
	* Sets the region in plain text mode.
	* 
	* @param text The text to show
	**/
	void ShowPlainText( string text );
	
	/**
	* Sets the region in plain text mode on a timer
	* 
	* @param text The text to show
	**/
	void ShowPlainText( string text, int time, TopRegionListener* callback );
	
private:
	/// Primary text object
	Object*					primaryText;
	/// The timer counter
	int						counter;
	/// The timer threshold
	int						threshold;
	/// The timer callback
	TopRegionListener*		callback;
};

#endif /*TOP_REGION_H_*/
